package com.ruoyi.ymapp.banner.service.impl;

import com.ruoyi.ymapp.banner.domain.YmImage;
import com.ruoyi.ymapp.banner.domain.vo.YmImageVO;
import com.ruoyi.ymapp.banner.mapper.YmImageMapper;
import com.ruoyi.ymapp.banner.service.IYmImageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 首页轮播图Service业务层处理
 * 
 * @author Lu.F
 * @date 2022-11-10
 */
@Service
@Slf4j
public class YmImageServiceImpl implements IYmImageService 
{
    @Autowired
    private YmImageMapper ymImageMapper;

    /**
     * 查询首页轮播图
     * 
     * @param id 首页轮播图主键
     * @return 首页轮播图
     */
    @Override
    public YmImage selectYmImageById(Long id)
    {
        return ymImageMapper.selectYmImageById(id);
    }

    /**
     * 查询首页轮播图列表
     * 
     * @param ymImage 首页轮播图
     * @return 首页轮播图
     */
    @Override
    public List<YmImage> selectYmImageList(YmImage ymImage)
    {
        return ymImageMapper.selectYmImageList(ymImage);
    }

    /**
     * 新增首页轮播图
     * 
     * @param ymImage 首页轮播图
     * @return 结果
     */
    @Override
    public int insertYmImage(YmImage ymImage)
    {
        return ymImageMapper.insertYmImage(ymImage);
    }

    /**
     * 修改首页轮播图
     * 
     * @param ymImage 首页轮播图
     * @return 结果
     */
    @Override
    public int updateYmImage(YmImage ymImage)
    {
        return ymImageMapper.updateYmImage(ymImage);
    }

    /**
     * 批量删除首页轮播图
     * 
     * @param ids 需要删除的首页轮播图主键
     * @return 结果
     */
    @Override
    public int deleteYmImageByIds(Long[] ids)
    {
        return ymImageMapper.deleteYmImageByIds(ids);
    }

    /**
     * 删除首页轮播图信息
     * 
     * @param id 首页轮播图主键
     * @return 结果
     */
    @Override
    public int deleteYmImageById(Long id)
    {
        return ymImageMapper.deleteYmImageById(id);
    }

    /**
     * 根据图片类型查找
     * @param imageType
     * @return
     */
    @Override
    public List<YmImageVO> queryImageByType(String imageType) {
        List<YmImage> ymImages = ymImageMapper.queryImageByType(imageType);
        List<YmImageVO> imageVoList = ymImages.stream().map(this::convertVO).collect(Collectors.toList());
        return imageVoList;
    }

    /**
     * 转换对象为VO
     * @param ymImage
     * @return
     */
    private YmImageVO convertVO(YmImage ymImage){
        YmImageVO imageVO = new YmImageVO();
        BeanUtils.copyProperties(ymImage,imageVO);
        log.info("imageVo:{}",imageVO);
        return imageVO;
    }
}
